home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magnum One
/
Magnum One (Mid-American Digital) (Disc Manufacturing).iso
/
d12
/
asmbler.arc
/
MORE.ASM
< prev
next >
Wrap
Assembly Source File
|
1988-11-19
|
3KB
|
120 lines
CTRLZ EQU 26
CR EQU 13
LF EQU 10
BS EQU 8
TAB EQU 9
BEL EQU 7
ASSUME CS:MOREC,DS:MOREC,ES:MOREC,SS:MOREC
MOREC SEGMENT PARA PUBLIC 'CODE'
ORG 100H
MORE: MOV AH,30H
INT 21H
XCHG AH,AL
CMP AX,0200H ; DOS 2.00 ??
JNB CONT
MOV DX,OFFSET BADDOS
MOV AH,09H ; PRINT STRING
INT 21H
INT 20H ; TERMINATE
CONT: MOV BYTE PTR NUMROWS,25
MOV AH,0FH
INT 10H
MOV NUMCOLS,AH
MOV DX,OFFSET CRLF
MOV AH,09H ; PRINT STRING
INT 21H
XOR BX,BX
MOV AH,45H ; DUP HANDLE
INT 21H
MOV BP,AX
MOV AH,3EH ; CLOSE HANDLE
INT 21H
MOV BX,2
MOV AH,45H ; DUP HANDLE
INT 21H
NEXTBF: CLD
MOV DX,OFFSET BUFFER
MOV CX,4096
MOV BX,BP
MOV AH,3FH ; READ HANDLE
INT 21H
OR AX,AX
JNZ GOTCH
EXIT: INT 20H ; TERMINATE
GOTCH: MOV CX,AX
MOV SI,DX
NEXTCH: LODSB
CMP AL,CTRLZ
JZ EXIT
CMP AL,CR
JNZ NOCR
MOV BYTE PTR COLNUM,1
JMP SHORT PRINTCH
NOCR: CMP AL,LF
JNZ NOLF
INC ROWNUM
JMP SHORT PRINTCH
NOLF: CMP AL,BS
JNZ NOBS
CMP BYTE PTR COLNUM,1
JZ PRINTCH
DEC COLNUM
JMP SHORT PRINTCH
NOBS: CMP AL,TAB
JNZ NOTAB
MOV AH,COLNUM
ADD AH,7
AND AH,NOT 7
INC AH
MOV COLNUM,AH
JMP SHORT PRINTCH
NOTAB: CMP AL,BEL
JZ PRINTCH
INC COLNUM
MOV AH,COLNUM
CMP AH,NUMCOLS
JBE PRINTCH
INC ROWNUM
MOV BYTE PTR COLNUM,1
PRINTCH:MOV DL,AL
MOV AH,02H ; PRINT CHAR
INT 21H
MOV AH,ROWNUM
CMP AH,NUMROWS
JB LOOPCH
MOV DX,OFFSET MORSTR
MOV AH,09H ; PRINT STRING
INT 21H
MOV AH,0CH ; CLEAR INPUT BUFFER AND
MOV AL,01H ; KEYBOARD INPUT
INT 21H
MOV DX,OFFSET CRLF
MOV AH,09H ; PRINT STRING
INT 21H
MOV BYTE PTR COLNUM,1
MOV BYTE PTR ROWNUM,1
DEC SI
INC CX
LOOPCH: DEC CX
JZ LONGBF
JMP NEXTCH
LONGBF: JMP NEXTBF
NUMROWS DB 24
NUMCOLS DB 80
ROWNUM DB 01
COLNUM DB 01
DB 00H,00H,00H,00H,00H
MORSTR DB CR,"-- More --$"
BADDOS DB "MORE: Incorrect DOS version"
CRLF DB CR,LF,"$"
BUFFER DB 102 DUP (0)
MOREC ENDS
END MORE